//初始化我的最近会话表格
//function initGetRecentContactListTable(data) {
//  $('#get_recent_contact_list_table').bootstrapTable({
//      method: 'get',
//      cache: false,
//      height: 500,
//      striped: true,
//      pagination: true,
//      pageSize: pageSize,
//      pageNumber: 1,
//      pageList: [10, 20, 50, 100],
//      search: true,
//      showColumns: true,
//      clickToSelect: true,
//      columns: [
//          {field: "SessionType", title: "会话类型(英文)", align: "center", valign: "middle", sortable: "true", visible: false},
//          {field: "SessionTypeZh", title: "会话类型", align: "center", valign: "middle", sortable: "true"},
//          {field: "SessionId", title: "会话ID", align: "center", valign: "middle", sortable: "true"},
//          {field: "SessionNick", title: "会话昵称", align: "center", valign: "middle", sortable: "true"},
//          {field: "SessionImage", title: "会话头像", align: "center", valign: "middle", sortable: "true", visible: false},
//          {field: "C2cAccount", title: "发送者ID", align: "center", valign: "middle", sortable: "true"},
//          {field: "C2cNick", title: "发送者昵称", align: "center", valign: "middle", sortable: "true"},
//          {field: "UnreadMsgCount", title: "未读数", align: "center", valign: "middle", sortable: "true"},
//          {field: "MsgSeq", title: "Seq", align: "center", valign: "middle", sortable: "true"},
//          {field: "MsgRandom", title: "Random", align: "center", valign: "middle", sortable: "true"},
//          {field: "MsgTimeStamp", title: "时间", align: "center", valign: "middle", sortable: "true"},
//          {field: "MsgShow", title: "内容", align: "center", valign: "middle", sortable: "true"}
//      ],
//      data: data,
//      formatNoMatches: function () {
//          return '无符合条件的记录';
//      }
//  });
//}

//我的最近联系人
var getRecentContactList = function() {
	console.log("进入最近联系人方法");
	//  initGetRecentContactListTable([]);
	var options = {
		'Count': reqRecentSessCount //最近的会话数
	};
	webim.getRecentContactList(
		options,
		function(resp) {
			var data = [];
			var tempSess, tempSessMap = {}; //临时会话变量
			if(resp.SessionItem && resp.SessionItem.length > 0) {

				for(var i in resp.SessionItem) {
					var item = resp.SessionItem[i];
					var type = item.Type; //接口返回的会话类型
					var sessType, typeZh, sessionId, sessionNick = '',
						sessionImage = '',
						senderId = '',
						senderNick = '';
					if(type == webim.RECENT_CONTACT_TYPE.C2C) { //私聊
						typeZh = '私聊';
						sessType = webim.SESSION_TYPE.C2C; //设置会话类型
						sessionId = item.To_Account; //会话id，私聊时为好友ID或者系统账号（值为@TIM#SYSTEM，业务可以自己决定是否需要展示），注意：从To_Account获取,

						if(sessionId == '@TIM#SYSTEM') { //先过滤系统消息，，
							webim.Log.warn('过滤好友系统消息,sessionId=' + sessionId);
							continue;
						}
						var key = sessType + "_" + sessionId;
						var c2cInfo = infoMap[key];
						if(c2cInfo && c2cInfo.name) { //从infoMap获取c2c昵称
							sessionNick = c2cInfo.name; //会话昵称，私聊时为好友昵称，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
						} else { //没有找到或者没有设置过
							sessionNick = sessionId; //会话昵称，如果昵称为空，默认将其设成会话id
						}
						if(c2cInfo && c2cInfo.image) { //从infoMap获取c2c头像
							sessionImage = c2cInfo.image; //会话头像，私聊时为好友头像，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
						} else { //没有找到或者没有设置过
							sessionImage = friendHeadUrl; //会话头像，如果为空，默认将其设置demo自带的头像
						}
						senderId = senderNick = ''; //私聊时，这些字段用不到，直接设置为空

					} else if(type == webim.RECENT_CONTACT_TYPE.GROUP) { //群聊
						typeZh = '群聊';
						sessType = webim.SESSION_TYPE.GROUP; //设置会话类型
						sessionId = item.ToAccount; //会话id，群聊时为群ID，注意：从ToAccount获取
						sessionNick = item.GroupNick; //会话昵称，群聊时，为群名称，接口一定会返回

						if(item.GroupImage) { //优先考虑接口返回的群头像
							sessionImage = item.GroupImage; //会话头像，群聊时，群头像，如果业务设置过群头像（设置群头像请参考wiki文档-设置群资料接口），接口会返回
						} else { //接口没有返回或者没有设置过群头像，再从infoMap获取群头像
							var key = sessType + "_" + sessionId;
							var groupInfo = infoMap[key];
							if(groupInfo && groupInfo.image) { //
								sessionImage = groupInfo.image
							} else { //不存在或者没有设置过，则使用默认头像
								sessionImage = groupHeadUrl; //会话头像，如果没有设置过群头像，默认将其设置demo自带的头像
							}
						}
						senderId = item.MsgGroupFrom_Account; //群消息的发送者id

						if(!senderId) { //发送者id为空
							webim.Log.warn('群消息发送者id为空,senderId=' + senderId + ",groupid=" + sessionId);
							continue;
						}
						if(senderId == '@TIM#SYSTEM') { //先过滤群系统消息，因为接口暂时区分不了是进群还是退群等提示消息，
							webim.Log.warn('过滤群系统消息,senderId=' + senderId + ",groupid=" + sessionId);
							continue;
						}

						senderNick = item.MsgGroupFromCardName; //优先考虑群成员名片
						if(!senderNick) { //如果没有设置群成员名片
							senderNick = item.MsgGroupFromNickName; //再考虑接口是否返回了群成员昵称
							if(!senderNick) { //如果接口没有返回昵称或者没有设置群昵称，从infoMap获取昵称
								var key = webim.SESSION_TYPE.C2C + "_" + senderId;
								var c2cInfo = infoMap[key];
								if(c2cInfo && c2cInfo.name) {
									senderNick = c2cInfo.name; //发送者群昵称
								} else {
									sessionNick = senderId; //如果昵称为空，默认将其设成发送者id
								}
							}
						}

					} else {
						typeZh = '未知类型';
						sessionId = item.ToAccount; //
					}

					if(!sessionId) { //会话id为空
						webim.Log.warn('会话id为空,sessionId=' + sessionId);
						continue;
					}

					if(sessionId == '@TLS#NOT_FOUND') { //会话id不存在，可能是已经被删除了
						webim.Log.warn('会话id不存在,sessionId=' + sessionId);
						continue;
					}

					//                  if (sessionNick.length > maxNameLen) {//帐号或昵称过长，截取一部分，出于demo需要，业务可以自己决定
					//                      sessionNick = sessionNick.substr(0, maxNameLen) + "...";
					//                  }

					tempSess = tempSessMap[sessType + "_" + sessionId];
					if(!tempSess) { //先判断是否存在（用于去重），不存在增加一个
						tempSessMap[sessType + "_" + sessionId] = true;
						data.push({
							SessionType: sessType, //会话类型
							SessionTypeZh: typeZh, //会话类型中文
							SessionId: webim.Tool.formatText2Html(sessionId), //会话id
							SessionNick: webim.Tool.formatText2Html(sessionNick), //会话昵称
							SessionImage: sessionImage, //会话头像
							C2cAccount: webim.Tool.formatText2Html(senderId), //发送者id
							C2cNick: webim.Tool.formatText2Html(senderNick), //发送者昵称
							UnreadMsgCount: item.UnreadMsgCount, //未读消息数
							MsgSeq: item.MsgSeq, //消息seq
							MsgRandom: item.MsgRandom, //消息随机数
							MsgTimeStamp: webim.Tool.formatTimeStamp(item.MsgTimeStamp), //消息时间戳
							MsgShow: item.MsgShow //消息内容
						});
					}
				}
			}
			console.log("最近联系人data--" + JSON.stringify(data));
			//          $('#get_recent_contact_list_table').bootstrapTable('load', data);
			//          $('#get_recent_contact_list_dialog').modal('show');
		},
		function(err) {
//			alert(err.ErrorInfo);
		}
	);
};

//初始化聊天界面左侧最近会话列表
var initRecentContactList = function(cbOK, cbErr) {
	var reqRecentSessCount = 5;
	var options = {
		'Count': reqRecentSessCount //要拉取的最近会话条数
	};
	webim.getRecentContactList(
		options,
		function(resp) {
			var tempSess; //临时会话变量
			var firstSessType; //保存第一个会话类型
			var firstSessId; //保存第一个会话id

			//清空聊天对象列表
			var sessList = document.getElementsByClassName("mui-content")[0];
			sessList.innerHTML = "";
			if(resp.SessionItem && resp.SessionItem.length > 0) { //如果存在最近会话记录

				for(var i in resp.SessionItem) {
					var item = resp.SessionItem[i];
					var type = item.Type; //接口返回的会话类型
					var sessType, typeZh, sessionId, sessionNick = '',
						sessionImage = '',
						senderId = '',
						senderNick = '';
					if(type == webim.RECENT_CONTACT_TYPE.C2C) { //私聊
						typeZh = '私聊';
						sessType = webim.SESSION_TYPE.C2C; //设置会话类型
						sessionId = item.To_Account; //会话id，私聊时为好友ID或者系统账号（值为@TIM#SYSTEM，业务可以自己决定是否需要展示），注意：从To_Account获取,

						if(sessionId == '@TIM#SYSTEM') { //先过滤系统消息，，
							webim.Log.warn('过滤好友系统消息,sessionId=' + sessionId);
							continue;
						}
						var key = sessType + "_" + sessionId;
						var c2cInfo = infoMap[key];
						console.log("c2cInfo!!!" + c2cInfo);
						if(c2cInfo && c2cInfo.name) { //从infoMap获取c2c昵称
							sessionNick = c2cInfo.name; //会话昵称，私聊时为好友昵称，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
						} else { //没有找到或者没有设置过
							sessionNick = sessionId; //会话昵称，如果昵称为空，默认将其设成会话id
						}
						if(c2cInfo && c2cInfo.image) { //从infoMap获取c2c头像
							sessionImage = c2cInfo.image; //会话头像，私聊时为好友头像，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
						} else { //没有找到或者没有设置过
							sessionImage = friendHeadUrl; //会话头像，如果为空，默认将其设置demo自带的头像
						}
						senderId = senderNick = ''; //私聊时，这些字段用不到，直接设置为空
					} else if(type == webim.RECENT_CONTACT_TYPE.GROUP) { //群聊
						typeZh = '群聊';
						sessType = webim.SESSION_TYPE.GROUP; //设置会话类型
						sessionId = item.ToAccount; //会话id，群聊时为群ID，注意：从ToAccount获取
						sessionNick = item.GroupNick; //会话昵称，群聊时，为群名称，接口一定会返回

						if(item.GroupImage) { //优先考虑接口返回的群头像
							sessionImage = item.GroupImage; //会话头像，群聊时，群头像，如果业务设置过群头像（设置群头像请参考wiki文档-设置群资料接口），接口会返回
						} else { //接口没有返回或者没有设置过群头像，再从infoMap获取群头像
							var key = sessType + "_" + sessionId;
							var groupInfo = infoMap[key];
							if(groupInfo && groupInfo.image) { //
								sessionImage = groupInfo.image
							} else { //不存在或者没有设置过，则使用默认头像
								sessionImage = groupHeadUrl; //会话头像，如果没有设置过群头像，默认将其设置demo自带的头像
							}
						}
						senderId = item.MsgGroupFrom_Account; //群消息的发送者id

						if(!senderId) { //发送者id为空
							webim.Log.warn('群消息发送者id为空,senderId=' + senderId + ",groupid=" + sessionId);
							continue;
						}
						if(senderId == '@TIM#SYSTEM') { //先过滤群系统消息，因为接口暂时区分不了是进群还是退群等提示消息，
							webim.Log.warn('过滤群系统消息,senderId=' + senderId + ",groupid=" + sessionId);
							continue;
						}
						senderNick = item.MsgGroupFromCardName; //优先考虑群成员名片
						if(!senderNick) { //如果没有设置群成员名片
							senderNick = item.MsgGroupFromNickName; //再考虑接口是否返回了群成员昵称
							if(!senderNick && !sessionNick) { //如果接口没有返回昵称或者没有设置群昵称，从infoMap获取昵称
								var key = webim.SESSION_TYPE.C2C + "_" + senderId;
								var c2cInfo = infoMap[key];
								if(c2cInfo && c2cInfo.name) {
									senderNick = c2cInfo.name; //发送者群昵称
								} else {
									sessionNick = senderId; //如果昵称为空，默认将其设成发送者id
								}
							}
						}
					} else {
						typeZh = '未知类型';
						sessionId = item.ToAccount; //
					}
					if(!sessionId) { //会话id为空
						webim.Log.warn('会话id为空,sessionId=' + sessionId);
						continue;
					}

					if(sessionId == '@TLS#NOT_FOUND') { //会话id不存在，可能是已经被删除了
						webim.Log.warn('会话id不存在,sessionId=' + sessionId);
						continue;
					}

					//                  if (sessionNick.length > maxNameLen) {//帐号或昵称过长，截取一部分，出于demo需要，业务可以自己决定
					//                      sessionNick = sessionNick.substr(0, maxNameLen) + "...";
					//                  }

					tempSess = recentSessMap[sessType + "_" + sessionId];
					if(!tempSess) { //先判断是否存在（用于去重），不存在增加一个

						if(!firstSessId) {
							firstSessType = sessType; //记录第一个会话类型
							firstSessId = sessionId; //记录第一个会话id
						}
						recentSessMap[sessType + "_" + sessionId] = {
							SessionType: sessType, //会话类型
							SessionId: sessionId, //会话对象id，好友id或者群id
							SessionNick: sessionNick, //会话昵称，好友昵称或群名称
							SessionImage: sessionImage, //会话头像，好友头像或者群头像
							C2cAccount: senderId, //发送者id，群聊时，才有用
							C2cNick: senderNick, //发送者昵称，群聊时，才有用
							UnreadMsgCount: item.UnreadMsgCount, //未读消息数,私聊时需要通过webim.syncMsgs(initUnreadMsgCount)获取,参考后面的demo，群聊时不需要。
							MsgSeq: item.MsgSeq, //消息seq
							MsgRandom: item.MsgRandom, //消息随机数
							MsgTimeStamp: webim.Tool.formatTimeStamp(item.MsgTimeStamp), //消息时间戳
							MsgGroupReadedSeq: item.MsgGroupReadedSeq || 0,
							MsgShow: item.MsgShow //消息内容,文本消息为原内容，表情消息为[表情],其他类型消息以此类推
						};
						//在左侧最近会话列表框中增加一个会话div
						addSess(sessType, webim.Tool.formatText2Html(sessionId), webim.Tool.formatText2Html(sessionNick), sessionImage, item.UnreadMsgCount, 'mui-content', 'HEAD', webim.Tool.formatTimeStamp(item.MsgTimeStamp));
					}

				}
				//清空聊天界面
				//              document.getElementsByClassName("msgflow")[0].innerHTML = "";

				tempSess = recentSessMap[firstSessType + "_" + firstSessId]; //选中第一个会话
				selType = tempSess.SessionType; //初始化当前聊天类型

				selToID = tempSess.SessionId; //初始化当前聊天对象id

				selSess = webim.MsgStore.sessByTypeId(selType, selToID); //初始化当前会话对象

//				setSelSessStyleOn(selToID); //设置当前聊天对象选中样式

				webim.syncMsgs(initUnreadMsgCount); //初始化最近会话的消息未读数

				if(cbOK) //回调
					cbOK();

			}

		},
		cbErr
	);
};

//初始化最近会话的消息未读数
function initUnreadMsgCount() {
	var sess;
	var sessMap = webim.MsgStore.sessMap();
	for(var i in sessMap) {
		sess = sessMap[i];
		console.log("time---->" + sess.time());
		//		for(var key in sess) {
		//			console.log('!!sess!' + key + '=' + sess[key]);
		//		}
		updateSessDiv(sess.type(), sess.id(), sess.name(), sess.unread(),sess.time());
	}
}

